Real time dynamic client access control

ABSTRACT

A system and method for facilitating controlled access by a client device to one or more services provided by a server are disclosed. The client device&#39;s access to the services provided by the server may be dynamically controlled by a controller, which may generate instructions to an agent to effectuate the access control. The agent may be configured to control one or more access components associated with the server. The instructions generated by the controller may instruct the agent to cause the access control components to grant or remove the client device&#39;s access to the services provided by the server. In some implementations, the controller may generate such instructions based on a status of a session established between the controller and the client device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of pending U.S. patent applicationSer. No. 16/027,537, filed Jul. 5, 2018, entitled “REAL TIME DYNAMICCLIENT ACCESS CONTROL”, which is a continuation of U.S. patentapplication Ser. No. 14/873,333, filed Oct. 2, 2015, entitled “REAL TIMEDYNAMIC CLIENT ACCESS CONTROL” (which issued as U.S. Pat. No. 10,021,069on Jul. 10, 2018), which claims priority to U.S. Provisional PatentApplication Ser. No. 62/142,457, filed Apr. 2, 2015, entitled “REAL TIMEDYNAMIC ACCESS CONTROL,” which are hereby incorporated herein byreference in their entirety.

FIELD OF THE INVENTION

The invention generally relates to facilitating controlled access by aclient device to a service or data provided by a server.

BACKGROUND OF THE INVENTION

Client-server architecture (client/server) is a network architecture inwhich a device or process on the network is either a client or a server.In the client-server architecture, a server provides one or moreservices, which may be defined by the provider(s), to a client device.For example, an appliance with network capability, such as a smartrefrigerator, may provide various services to a client device, such as asmartphone. For instance, the smart refrigerator may allow thesmartphone to remotely read and/or control the temperature of the smartrefrigerator via a wireless network. In that context, the smartrefrigerator is a server. As another example, a networked computer mayprovide a data service to a client device such that the client devicemay send and/or receive data to and/or from a data store, such as filestorage, coupled to the networked computer. In that context, thenetworked computer is a server. To facilitate a user to use the servicesprovided by the server in the client-server architecture, the clientdevice typically provides an interface to allow a user to request theservices provided by the server and to display the results the serverreturns. The server typically waits for requests to arrive from clientdevice and then responds to them.

Controlling a client device's access to a service provided by a serveris generally known in the art. Various schemes of access control knownin the art may be categorized into user-level and device-level controlschemes. User-level access control typically involves controlling useraccess to certain services provided by the server via user credentialsand/or user access matrix(ces). User credentials of a user, i.e., username and password, typically facilitate authentication of the user tothe server, and user access matrix(ces) typically defines whichservice(s) the user has access to. For example, it is well known in theart to challenge a user to provide user credentials to log into anoperating system on a server, such as a UNIX server. Many applicationsare also known to have access control at user level by challenging usersto provide user credentials specific to the applications. Once a user isauthenticated by the credentials provided by the user, the applicationstypically provide the user access to one or more services of theapplications.

Device-level access control typically involves controlling a clientdevice's access to the server via device identities and device accessmatrices. Device-level access control is typically performed at anaccess control component (e.g., at a firewall component) of the server.For example, incoming data packets may be examined by a firewallcomponent such that data packets not originating from unauthorizedclient device(s) may not have access to the server.

SUMMARY OF THE INVENTION

In accordance with one aspect of the invention, an enhanced system andmethod for facilitating controlled access by a client device to one ormore services provided by a server are disclosed. The controlled accessmay be facilitated through a controller. The controller may beoperatively connected to the client device and an agent component thatis operatively connected to the server. The agent component may beconfigured such that it is capable of dynamically configuring an accesscontrol component associated with the server. The client device's accessto the services provided by the server may be dynamically controlled bythe controller such that the controller issues instructions to the agentcomponent to cause the agent component to dynamically grant or removethe client device's access to the services provided by the serve via theaccess control component. The controller may issue instructions to theagent component to grant the client device access to the servicesprovided by the server after the client device has registered with thecontroller and has authenticated itself to the controller. Thecontroller may issue instructions to the agent component to remove theaccess by the client device after a disconnect request is received orafter the client device becomes inactive in a manner predefined by theprovider(s) of the controller. This provides an enhanced access controlmechanism by which client device's access to a service provided by aserver may be dynamically controlled by a dedicated controller capableof authenticating client devices. This access mechanism may be deployedin an existing client/server environment by employing existing accesscontrol components already in use (e.g., a firewall) in theclient/server environment.

A system configured to facilitate access control for a client device mayinclude one or more processors configured to execute computer programmodules. The processors may operate in a client/server architecture withone or more client devices. The processors may be configured to executeone or more of: a registration component, an authentication component, asession component, a client access configuration component, and/or anyother components.

The registration component may be configured to receive a clientregistration request to register a client device. The registrationcomponent may be configured to receive an agent registration request toregister an agent.

The authentication component may be configured to authenticate theclient device in response to the client registration request beingreceived. The authentication component may be configured to authenticatethe agent in response to the agent registration request being received.

The session component may be configured to establish a session with theclient device, to communicate with the client device through thesession, and to terminate the session with the client device.

The client access configuration component may be configured to generateinstructions to be transmitted to the agent for removing or grantingclient device's access to the service(s) provided by the server. In someimplementations, the client access configuration component may beconfigured to remove or grant client device's access to the service(s)provided by server automatically based on the status of the sessionestablished between the client device and the controller. For example,when the session is established for the first time or subsequently(i.e., from a disconnected state to a connected state), the clientaccess configuration component may transmit an instruction to the agentinstructing the agent to grant client device 102 access to the server.Conversely, when the session is terminated, the client accessconfiguration component may transmit an instruction to the agentinstructing the agent to remove client device's access to the service(s)provided by server.

Other objects and advantages of the invention will be apparent to thoseskilled in the art based on the following drawings and detaileddescription.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A generally illustrates one exemplary system facilitating accesscontrol by a client device to a service in accordance with thedisclosure.

FIG. 1B generally illustrates another exemplary system facilitatingaccess control by a client device to a service in accordance with thedisclosure.

FIG. 2 illustrates a process by which the client device, agent, and theaccess control component shown in FIGS. 1A and 1B are registered at thecontroller also shown therein.

FIG. 3 illustrates a process by which access by a client device to aservice may be removed and granted at the controller in accordance withone embodiment of the disclosure.

FIG. 4 illustrates one example of the controller shown in FIG. 1A andFIG. 1B.

FIG. 5 is a flow diagram illustrating an exemplary method of registeringan agent and a client device at the controller shown in FIG. 4 inaccordance with one embodiment of the disclosure.

FIG. 6 is a flow diagram illustrating an exemplary method of removing aclient device's access at the controller shown in FIG. 4 in accordancewith one embodiment of the disclosure.

FIG. 7 is a flow diagram illustrating an exemplary method of granting aclient device access at the controller shown in FIG. 4 in accordancewith one embodiment of the disclosure.

FIG. 8 illustrates one exemplary system facilitating the access controlmechanism in accordance with one embodiment of the disclosure.

FIG. 9 illustrates another exemplary system facilitating the accesscontrol mechanism in accordance with one embodiment of the disclosure.

FIG. 10 illustrates various examples of topologies for configuring theclient device, controller, and agent in accordance with the disclosure.

FIG. 11 illustrates one example of providing redundancy at thecontrollers in accordance with the disclosure.

DETAILED DESCRIPTION

FIGS. 1A and 1B generally illustrate exemplary system 100 capable ofcontrolling a client device's access to a server in accordance with thedisclosure. In particular, the present disclosure generally pertains tofacilitating access control to one or more services provided by theserver. As shown in FIG. 1A, service(s) 110 may be provided by theserver 106 and client device's access to the service(s) 110 may becontrolled. The server 106 may include a computer system, a hostcomputer, a device, an appliance, and/or any other type(s) ofplatform(s) capable of providing one or more services to a clientdevice, such as the client device 102 shown in FIG. 1A. By way ofnon-limiting example, the server 106 may be a file server capable ofproviding file services to the client device 102. As another example,the server 106 may be a media content server capable of serving mediacontent to the client device 102. As yet another non-limiting example,the server 106 may be a smart appliance capable of providing remotecontrol services to the client device 102. Other examples of the server106 are contemplated. The service(s) 110 provided by server 106 may bedefined and made available by provider(s), administrator(s),manufacturer(s), and/or any other entities related to the server 106.For example, service(s) 110 may include data storage services, mediacontent services, or remote control services provided by server 106corresponding to the aforementioned examples. Other examples of services110 are contemplated.

As shown, for facilitating the access control mechanism in accordancewith disclosure, server 106 may be configured to comprise an agent 108,an access control component 112, and/or any other components. Agent 108may be configured to dynamically configure the access control component112. To achieve this, agent 108 may be operatively connected to thecontrol access component 112. Agent 108 may include a process, aprogram, firmware, an application, dedicated circuitry, computer logic,and/or any other type of software or hardware capable of controlling theaccess control component 112. In one embodiment of the disclosure, agent108 is implemented as a software component of the server 106.

Access control component 112 may be configured to examine incoming datato the server and prevent data originating from unauthorized clientdevices from accessing server 106. Access control component 112 mayinclude a process, a program, firmware, an application, dedicatedcircuitry, computer logic, and/or any other type of software or hardwarecapable of examining incoming data and filtering data as discussedherein. In one embodiment of the disclosure, the access controlcomponent 112 is implemented as a firewall of the server 108 and isdynamically configurable via commands. Configuring a firewall componentwith access rules using commands, such as shell commands, is generallyknown in the art. For example, Ocean Park Technologies describes variousexamples of configuring a firewall component on a Linux-based platformvia iptable commands. The examples provided by Ocean Park Technologiesfor configuring a firewall component are provided in Appendix A.

As also shown in FIG. 1A, in system 100, the controller 104 may beoperatively connected to server 106, and, in particular, may beoperatively connected to the agent 108, via a communication link 114.The communication link 114 may include any wired and/or wireless linksuitable for transmitting data between controller 104 and server 106. Inone embodiment of the disclosure, the communication link 114 is a linkfacilitating a networked communication (wired and/or wireless) betweencontroller 104 and server 106. However, this is not necessarily the onlycase. The communication link 114 may include a point-to-pointcommunication channel between controller 104 and server 106. Forexample, the communication link 114 may be a dedicated cable channelbetween server 106 and controller 104.

The controller 104 may include a process, a program, firmware, anapplication, dedicated circuitry, computer logic, and/or any other typeof software or hardware capable of performing the functions attributedto controller 104 as described herein. In one embodiment of thedisclosure, controller 104 is implemented as a software component on ahost computer operatively connected to server 106. In that embodiment,the combination of the software component and the host computer isconsidered as the controller 104.

As also shown, for facilitating the access control mechanism inaccordance with the disclosure, the client device 102 may be operativelyconnected to the controller 104 via a communication link 116. Thecommunication link 116 may include any wired and/or wireless linksuitable for transmitting data between controller 104 and client device102. In one embodiment of the disclosure, the communication link 116 isa link facilitating a networked communication (wired and/or wireless)between controller 104 and client device 102. However, this is notnecessarily the only case. In some examples, the communication link 116may include a point-to-point communication channel between controller104 and client device 102. For example, the communication link 116 maybe a dedicated cable channel between client device 102 and controller104.

The client device 102 may be a smartphone, a tablet, a laptop computer,a netbook, a desktop computer, a terminal device, a handheld device, awearable device, a remote control device, a game console, a smart TV, aprinter, a set top box, and/or any other type of devices capable ofrequesting and/or receiving service(s) 110 provided by server 106 viacommunication link 118 shown in FIG. 1A. The communication link 118 mayinclude any wired and/or wireless link suitable for transmitting databetween server 106 and client device 102. In one embodiment of thedisclosure, the communication link 118 is a link facilitating anetworked communication (wired and/or wireless) between server 106 andclient device 102. However, this is not necessarily the only case. Insome examples, the communication link 118 may include a point-to-pointcommunication channel between server 106 and client device 102. Forexample, the communication link 118 may be a dedicated cable channelbetween server 106 and client device 102.

FIG. 1B illustrates another example of system 100 facilitating clientdevice access control to the service(s) provided by a server inaccordance with the disclosure. It will be described with comparison toFIG. 1A. The system 100 shown in FIG. 1B is different from the one shownin FIG. 1A with respect to the arrangement of the agent 108 and accesscontrol component 112. In FIG. 1B, as shown, agent 108 is locatedoutside of the server 106. In this example, agent 108 is a computingplatform (e.g., a server computer) configured by one or more softwarecomponents thereon to perform the functions attributed to the agent 108as described herein. However, this is merely illustrative. As anotherexample, the agent 108 may be a relay device or a repeater device thatre-transmits data/messages (from the physical layer perspective, theseare signals) to an appropriate access control component 112. As alsoshown in this example, the access control component 112 may be locatedoutside of the server 106. For example, the access control component 112may be a gateway server with firewall and configured to control accessto servers including server 106 within a particular network. As anotherexample, without limitation, the access control component 112 may be arouter device or a switch device with authentication capability. In thatexample, the access control component 112 (i.e., the router device) maybe configured by agent 108 via a communication link 120 to controlrouting or switching of data packets from router device 112 to server106 over a communication link 122 between the access control component112 and server 106. The communication link 122 and as well as thecommunication link 120 may include any wired and/or wireless linksuitable for transmitting data. In one embodiment of the disclosure, thecommunication link 120 and/or link 122 is a link facilitating anetworked communication (wired and/or wireless). However, this is notnecessarily the only case. In some examples, the communication link 120and/or link 122 may include a point-to-point communication channelbetween agent 108 and access control component 112, and point to pointlink between access control component 112 and server 106. For example,the communication link 120 may be a dedicated cable channel betweenagent 108 and access control component 112.

By way illustration, in one example, the client device 102 may befacilitated to access server via agent 108 in accordance with the systemarchitecture shown in FIG. 1B. In that example, the agent 108 may beconfigured to dynamically configure the access control component 112such that data packets from the client device 102 may be routed/switchedto server 106. Accordingly, when the client device 102 initiates datacommunication with server 106 for access to services 110 (e.g., webservices provided by server 106), the client device 102 may not berequired to specify an addressable identification of the server 106(e.g., a URL or an IP address of the server 106). For instance, theclient device 102 may only need to specify a particular webpage that itwants to download in an http get request without specifying a URL forthe webpage; and the access control component 112 (as configured by theagent 108) may direct the http get request from the client device 102 toserver 106.

With the general architecture of system 100 having been described inFIGS. 1A and 1B, attention is now directed to FIG. 2 and FIG. 3, both ofwhich describe various operations that may be performed by the elementsshown in FIGS. 1A and 1B to implement the access control mechanism inaccordance with the disclosure. FIG. 2 illustrates a process 200 bywhich the client device 102, agent 108, and the access control component112 shown in FIGS. 1A and 1B are registered at the controller 104 tofacilitate the access control mechanism in accordance with thedisclosure. It will be described with reference to FIGS. 1A and 1B. Theoperations of process 200 presented below are intended to beillustrative. In some embodiments, process 200 may be accomplished withone or more additional operations not described and/or without one ormore of the operations discussed. Additionally, the order in which theoperations in process 200 are illustrated in FIG. 2 and described belowis not intended to be limiting.

As shown, at an operation CTR 202, the controller 104 may announceitself intermittently via the communication links 114 and/or 116. By wayof illustration, at CTR 202, the controller 104 may broadcast one ormore control packets using the communication links 114 and/or 116,wherein the control packets may include information indicatinginformation regarding the controller 104. The information regarding thecontroller 104 may include the identity of the controller 104, thenetwork address of the controller 104, the physical location of thecontroller 104, one or more services (e.g., service(s) 110) associatedwith the controller 104, and/or any other information. The frequency atwhich the controller 104 performs operation CTR 202 may be preset by theprovider(s), administrator(s), manufacturer(s), and/or any otherentities related to the controller 104. For example, without limitation,the administrator(s) of the controller 104 may preset the controller 104to announce itself every minute onto the network(s) via communicationlinks 114 and/or 116.

At an operation CD 202, client device 102 may start up. For example, theclient device 102 may be powered on and perform a preset initializationprocess. As also shown, at CD 202, the client device 102 may discoverthe controller 104, for example, by receiving the control packetsbroadcasted by the controller 104 at CTR 202. In some examples, one ormore applications on the client device 102 may initialize when theclient device 102 starts up at operation CD 202.

At an operation AGT 202, agent 108 may start up. For example, the agent108 may be powered on and perform a preset initialization process. Asalso shown, at AGT 202, the agent 108 may discover the controller 104,for example, by receiving the control packets broadcast by thecontroller 104 at CTR 202.

At an operation ACC 202, access control component 112 may start up. Alsoat ACC 202, the access control component 112 may initialize such thatclient device 102 is not granted any access to the service(s) 110provided by the server 106.

At an operation CD 204, the client device 102 may authenticate thecontroller 104. In some examples, the authentication performed at CD 204by the client device 102 may be done based on the control packetsbroadcast by the controller at operation CTR 202. In some otherexamples, the client device 102 may challenge the controller 104 toprovide credentials to authenticate the controller 104 to the clientdevice 102.

At an operation AGT 204, the agent 108 may authenticate the controller.In some examples, the authentication performed at AGT 204 may be donebased on the control packets broadcast by the controller at operationCTR 202. In some other examples, the agent 108 may challenge thecontroller 104 to provide credentials to authenticate the controller 104to the agent 108.

At an operation CD 206, the client device 102 may transmit aregistration request to register itself to the controller 104,indicating the client device 102 is online. In some examples, theregistration request may be automatically transmitted as instructed by aprocess, an application, a program, software, hardware, and/or any othercomponents on the client device 102. As an example, a hardwarecomponent, such as a RF transceiver on the client device 102, may beconfigured to transmit a registration request to register the RFtransceiver and/or the client device 102 to the controller 104,indicating the RF transceiver and/or the client device 102 is online. Asanother example, an application, such as a banking terminal application,may be configured to automatically transmit the registration request tothe controller 104 after the controller 104 is authenticated. In someother examples, the registration request transmitted at CD 206 may bemanually instigated by an administrator, a user, and/or any otherentities associated with the client device 102. For example, a user ofthe client device 102 may initiate the transmission of the registrationrequest to the controller 104 via a user interface presented on clientdevice 102.

In some examples, the client registration request transmitted by theclient device 102 may include information identifying the client device102. Such information may include a name (e.g., computer name) of theclient device 102, identification number(s) associated with one or morehardware and/or software components on the client device 102 (e.g., aserial number associated with the R/F transceiver of the client device102, a MAC address of the network interface card of the client device102, and/or any identification number associated with the hardwareand/or software components on the client device 102) a network addressof the client device 102 (e.g., an IP address of the client device 102)and/or any other information identifying the client device 102. In someexamples, the client registration request transmitted by the clientdevice 102 may include user information regarding the user(s) active onthe client device 102. The user information may include a usernameand/or any other user identification information.

At an operation AGT 206, agent 108 may transmit a registration requestto register itself to the controller 104. In some examples, withoutlimitation, agent 108 may be configured to transmit the registrationrequest at AGT 206 in response to the controller 104 having beenauthenticated at AGT 204.

At an operation CTR 204, controller 104 may receive the registrationrequest from the agent 108 and authenticate agent 108. At an operationCTR 206, the controller 104 may receive the registration request fromthe client device 102 and authenticate client device 102.

At an operation CTR 208, the controller 104 may establish a session withthe client device 102 after the client device is successfully registeredto the controller 104. The session established at CTR 208 may includesession information indicating a session identification number, a stateof states of the session, a time period associated with the session, asession token, and/or any other session information.

At an operation CTR 210, the controller 104 may generate one or moreinstructions instructing the agent 108 to grant client device 102 accessto service(s) 110 provided by the server 106, in response to the sessionhaving been successfully established between the client device 102 andcontroller 104 at CTR 208. Also at an operation CTR 210, the controller104 may transmit the aforementioned instructions to the server 106 overthe communication link 114.

At an operation AGT 208, the agent 108 may configure the access controlcomponent 112 to grant client device 102 access to the service(s) 110.As discussed above, in some examples, the agent 108 may configure theaccess control component 112 at AGT 208 by issuing one or more commandsto set up an access rule permitting the data coming from client device102 to enter server 106. In one embodiment, operation AGT 208 involvesissuing an iptable command to allow data coming from the client device102 to enter the server 106 through a network interface of the server106.

At an operation ACC 204, after receiving the configuration by the agent108 at AGT 208, the access control component 112 may grant the clientdevice 102 the access to the service(s) 110 provided by the server 106in response to the configuration performed by the agent 108 at AGT 208.

In one embodiment, process 200 illustrated in FIG. 2 and described aboveis implemented by the transport and security protocols described in U.S.Pat. No. 8,745,723 “System and Method For Providing Unified Transportand Security Protocols,” which is incorporated by reference herein inits entirety. In that embodiment, prior to process 200, informationregarding client device 102 is recorded in storage associated with thecontroller 104. A filter value is generated for the client device 102 atthe controller 104 and a hash value corresponding to the filter value istransmitted to the client device at a configuration stage of clientdevice 102. During the process 200 in that embodiment, at operation CD206, the client device 102 encapsulates the registration request withthe hash value, and, at operation CTR 206, the controller 104 receivesthe registration request from the client and authenticates the clientdevice 102 by comparing the hash value encapsulated in the request withthe filter value generated for the client device 102. If a match isfound between the hash value and the filter value, the controller 104authenticates the client device 102 and establishes a session with theclient device 102. If a match is not found between the hash value andthe filter value, a session is not established between the controller104 and the client device 102.

FIG. 3 illustrates a process by which access by a client device to aservice may be removed and granted at the controller in accordance withone embodiment of the disclosure. It will be described with reference toFIGS. 1A and 1B. The operations of process 300 presented below areintended to be illustrative. In some embodiments, process 300 may beaccomplished with one or more additional operations not described and/orwithout one or more of the operations discussed. Additionally, the orderin which the operations of process 300 are illustrated in FIG. 3 anddescribed below is not intended to be limiting.

As shown, at an operation CD 302, client device 102 may transmit, overthe communication line 116, a request to disconnect from the controller104. For example, the request to disconnect may be transmittedautomatically at CD 302 when the client device 102 is powered down. Asanother example, the request to disconnect may be transmitted at CD 302in response to an instruction from a user of the client device 102. Forinstance, a user interface may be provided on the client device 102 toenable a user to disconnect the client device 102 from the controller104. As another example, the request to disconnect may be transmittedautomatically by an application, a process, a program, software,firmware, hardware, and/or any other components on the client device 102when a user of the client device 102 stops using a process, anapplication on the client device 102, or the client device 102 in amanner that is predefined by the provider(s), administrator(s),manufacturer(s), and/or any other entities related to client device 102.For instance, the request to disconnect may be transmitted at CD 302after the user is idle on the client device 102 for a predeterminedamount of time or may be transmitted when the client device isrestarted. Other situations where the request to disconnect may betransmitted by the client device 102 are contemplated. In some examples,an interface may be provided to enable a user to manually have therequest to disconnect transmitted to the controller 104. For example, aninterface may be provided on the client device such that a user mayrequest to “log-off” the client device 102 from the controller 104. Asanother example, an interface may be provided on an administrationserver connected to the controller such that an administrator of system100 may request to “log-off” the client device 102 from the controller104.

At an operation CTR 302, the controller 104 may receive the disconnectrequest transmitted by the client device 102 at operation CD 302. Alsoat operation CTR 302, the controller 104 may terminate the session thatwas established with the client device 102 in response to the disconnectrequest being received at the controller 104. For example, thecontroller 104 may “log out” the client device 102 upon receiving thedisconnect request from the client device 102. In implementations, thismay be achieved by clearing or resetting the session informationregarding the client device 102 at controller 104.

At an operation CTR 304, the controller 104 may generate one or moreinstructions instructing agent 108 to remove the client device 102access to the service(s) 110 provided by the server 106. Also atoperation CTR 304, the controller 104 may transmit the generatedinstruction to the agent 108 over the communication link 104.

At an operation AGT 302, the agent 108 may receive the instruction(s)transmitted by the controller 104 at operation CTR 304.

At an operation AGT 304, in response to the instruction(s) beingreceived at operation AGT 302, the agent 108 may configure the accesscontrol component 112 to remove the client device 102's access to theservice(s) 110. As discussed above, in some examples, operation AGT 304may involve issuing commands to configure the access control component112 such that access to the service(s) 110 provided by server 106 may beremoved. In one embodiment, an iptable remove command is issued by theagent 108 to remove client device 102 access to server 106 in responseto the instruction(s) received from controller 104.

At an operation ACC 302, the access control component 112 receives theconfiguration by the agent 108 and removes the client device 102'saccess to the service(s) 110 provided by the server 106.

At an operation CD 304, the client device 102 transmits a request toestablish a session with the controller 104. In some examples, theclient device 102 may transmit such a request upon a determination thatthe user is active on the client device 102. For example, an interfacemay be provided on the client device 102 such that a user may request to“log-in” the client device 102 to the controller 104. As anotherexample, an interface may be provided on an administration serverconnected to the controller 104 such that an administrator of system 100may request to “log-in” the client device 102 to the controller 104. Insome examples, the client device 102 may transmit such a request inresponse to an instruction from an application on the client device 102.For example, an application on the client device 102 may automaticallygenerate an instruction to have the client device 102 to transmit such arequest during the initialization of the application. Other examples arecontemplated.

At an operation CTR 306, the controller 104 receives the requesttransmitted by the client deice 102 at operation CD 304 and establishesthe session with client device 102 accordingly.

At an operation CTR 308, the controller 104 generates one or moreinstructions instructing the agent 108 to grant the client device 102access to the service(s) 110.

At an operation AGT 306, the agent 108 receives the instruction(s)generated at CTR 308 from the controller 104 and configures the accesscontrol component 112 to grant the client device 102 access to theservice(s) 110.

At an operation ACC 304, the access control component 112 receives theconfiguration generated by the agent 108 at AGT 306 and grants theclient device 102 the access to the service(s) 110 accordingly.

It should be understood the process 300 described above may repeat theoperations therein to remove the client device 102's access to theservice(s) 110 and grant the client device 102 access to the service(s)110 alternatively. That is, although only one sequence of operations foraccess removal and granting is illustrated in FIG. 3, this sequence maybe repeated in the process 300 however many times.

With the processes to register a client device 102 and remove/grantclient device 102's access to the service(s) 110 provided by the server106 having been generally described above and illustrated in FIGS. 2 and3, attention is now directed to FIGS. 4-6, which illustrate exemplarystructure and operations of controller 104 in detail. FIGS. 4-6 will bedescribed with reference to FIGS. 1-3.

FIG. 4 illustrates one example of the controller 104 shown in FIGS. 1Aand 1B. As shown, the controller 104 may include a suitable device 402including, for example, a computer server, a laptop computer, a desktopcomputer, handheld device (e.g., mobile or smart phone, tablet, etc.), amedia center, a gaming console, a set top box, a printer, or any othersuitable device 402, just to name few. In this example, the device 402included in controller 104 employs a processor 404 operatively connectedto system memory 416 via a system bus 414. This is merely illustrative,as device 402 included in controller 104 may be implemented with more orfewer processors than those shown in FIG. 4. Although not shown, in someexamples, the controller 104 may include an input device, such as, butnot limited to, a touch screen, motion sensor, mouse, trackball,touchpad, digitizing tablet, joystick, pointing stick, keypad, keyboard,camera, remote controller, or any other suitable input device.

As shown, the device 402 included in controller 104 may includecommunication lines or ports to enable the exchange of information witha network and/or other computing platforms, such as the client device102 and agent 108. The processor 404 included in the device 402 may beconfigured to execute computer program modules via one or more ofhardware, software, and/or firmware. Although one processor 404 isillustrated as being included in device 402, it is understood that thenumber of processors included in device 402 may vary in some otherexamples. The device 402 may be interfaced with other computers, such asan administration server, a monitoring system, a terminal device, and/orany other computers, through one or more interfaces not shown in thisexample. For example, such interfaces may be established, at least inpart, via a network such as the Internet and/or any other suitable wiredor wireless communication links in the art.

The processor 404 may include a host central unit (CPU) having multiplecores; however, any suitable processor may be employed, including a DSP,APU, GPGPU, or any other suitable processor or logical circuitry. Theprocessor 404 may be bi-directionally connected to other components ofthe device 402 via the system bus 414. In this example, as shown, theprocessor 404 includes a registration component 406, an authenticationcomponent 408, a session component 410, a client access configurationcomponent 412, and/or any other components.

The registration component 406 may be configured to receive a clientregistration request to register a client device 102. The clientregistration request received by registration component 406 may includeidentity information regarding the client device 102. The client deviceidentity information may include information indicating a name (e.g., acomputer name), one or more serial numbers (e.g., a MAC address of theNetwork Interface Card of the client device 102), a network address(e.g., IP address), and/or any other types of identifications associatedwith the client device 102. As discussed above, in one embodiment, theclient registration request received by the registration component 406encapsulates a hash value that was pre-assigned to the client device102, which may be used to authenticate the client device 102 inaccordance with the transport and security protocols described in U.S.Pat. No. 8,745,723.

The registration component 406 may be configured to receive an agentregistration request to register an agent 108. The agent registrationrequest received by registration component 406 may include identityinformation regarding the agent 108. The agent identity information mayinclude information indicating a name, one or more serial numbers, anetwork address, and/or any other types of identifications associatedwith the agent 108. The registration component 406 may be configured toregister the agent 108 based on the agent identity information includedin the agent registration request. As discussed above, in oneembodiment, the agent registration request received by the registrationcomponent 406 encapsulates a hash value that was pre-assigned to theagent 108, which may be used to authenticate the agent 108 in accordancewith the transport and security protocols described in U.S. Pat. No.8,745,723.

The authentication component 408 may be configured to authenticate theclient device 102 in response to the client registration request beingreceived. In some examples, the client device authentication performedby authentication component 408 may involve extracting client deviceidentity information included in the received client registrationrequest, requesting the client device 102 to provide credentials forauthentication over the communication links, receiving the credentialsfrom the client device 102, verifying the received credentials, and/orany other sub-operations. In one embodiment, the authenticationcomponent 408 may be configured to authenticate the client device 102based on the hash value encapsulated in the client device registrationrequest as discussed above.

The authentication component 408 may be configured to authenticate theagent 108 in response to the agent registration request being received.In some examples, the agent authentication performed by authenticationcomponent 408 may involve extracting identity information included inthe received agent registration request, requesting the agent 108 toprovide credentials for authentication over the communication links,receiving the credentials from the agent 108, verifying the receivedcredentials, and/or any other sub-operations. In some examples, theauthentication component 408 may be configured to authenticate the agent108 based on the hash value encapsulated in the agent registrationrequest as discussed above.

The session component 410 may be configured to establish a session withthe client device 102, to communicate with the client device 102 throughthe session, and to terminate the session with the client device 102.Establishing the session with the client device by the session component410 may involve setting up session information indicating the sessionwith the client device 102 is alive. As illustration, a session ID and asession token may be created to represent the session, wherein thesession token may include information such as the communication channelfor communicating with the client device 102 (e.g., a socket), durationof the session, status of the client device 102, one or more messagesreceived from client device in the session, and/or any otherinformation. Communicating with the client device 102 by the sessioncomponent 410 may involve intermittently checking whether the clientdevice 102 is still alive or responsive, sending and/or receivingmessages from the client device 102 using the session ID and/or thesession token, and/or any other sub-operations. The messages receivedfrom the client device 102 through the session may include messagesindicating specific instructions to the controller 104. For example, themessages may indicate to terminate the session, to request access tocertain service(s) 110 provided by the server 106, to reconfigure thecontroller 104, and/or any other type of messages. Terminating thesession for a client device 102 by the session component 410 may involveclearing or resetting the session information associated with thesession. In some examples, the session component 410 may be configuredto terminate the session with client device 102 after the client deviceindicates to terminate the session or is not responsive for apredetermined amount of time. For instance, the session component 410may be configured to send keep-alive messages to the client device 102soliciting whether the client device 102 is still “alive” (i.e.,online). In response to the client device's instruction to terminate thesession as a response to the keep-alive message, the session component410 may be configured to terminate the session in the manner asdescribed herein. In situations where the client device 102 does notrespond to the keep-alive message within a predetermined amount of timeafter the keep-alive message is sent to the client device 102 (i.e.,timeout occurs), the session component 410 may be configured toterminate the session with the client device 102.

The client access configuration component 412 may be configured togenerate instructions to be transmitted to the agent 108 for removing orgranting client device 102's access to the service(s) 110 provided bythe server 106. In some implementations, the client access configurationcomponent 412 may be configured to generate the aforementionedinstructions in response to one or more messages received at controller104. For example, in response to a message received from anadministration server that indicates removing the client device 102'saccess to the server 106, the client access configuration component 412may generate instructions for transmission to the agent 108, and theinstructions may instruct the agent 108 to remove client device 102'saccess to the server 106. In some implementations, the client accessconfiguration component 412 may be configured to remove or grant clientdevice 102's access to the service(s) 110 provided by server 106automatically based on the status of the session established between theclient device 102 and the controller 104. For example, when the sessionis established for the first time or subsequently (i.e., from adisconnected state to a connected state), the client accessconfiguration component 412 may transmit an instruction to the agent 108instructing the agent 108 to grant client device 102 access to theserver 106. Conversely, when the session is terminated, the clientaccess configuration component 412 may transmit an instruction to theagent 108 instructing the agent 108 to remove client device 102's accessto the service(s) 110 provided by server 106.

FIG. 5 is a flow diagram showing an exemplary method 500 of registeringan agent and a client device at the controller in accordance with oneembodiment of the disclosure. It will be described with reference toFIG. 4. The operations of method 500 presented below are intended to beillustrative. In some embodiments, method 500 may be accomplished withone or more additional operations not described and/or without one ormore of the operations discussed. Additionally, the order in which theoperations of method 500 are illustrated in FIG. 5 and described belowis not intended to be limiting.

In some embodiments, method 500 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 500 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 500.

At an operation 502, an agent registration request may be received atthe controller 104. The agent registration request received at operation502 may include identity information regarding the agent 108. The agentidentity information may include information indicating a name, one ormore serial numbers, a network address, and/or any other types ofidentifications associated with the agent 108. In one embodiment, theagent registration request received at operation 502 is encapsulatedwith a hash value pre-assigned to the agent 108 at a configuration stageof the agent 108. In some implementations, operation 502 may beperformed by a registration component the same as or substantiallysimilar to the registration component 406 illustrated and describedherein.

At an operation 504, the agent may be authenticated by the controller104 in response to the agent registration request being received atoperation 502. In some implementations, operation 504 may be performedby an authentication component the same as or substantially similar tothe authentication component 408 illustrated and described herein.

At an operation 506, a client device registration request may bereceived at the controller 104. The client device registration requestreceived at operation 506 may include identity information regarding theclient device 102. The client device identity information may includeinformation indicating a name, one or more serial numbers, a networkaddress, and/or any other types of identifications associated with theclient device 102. In one embodiment, the client device registrationrequest received at operation 506 is encapsulated with a hash valuepre-assigned to the client device 102 at a configuration stage of theclient device 102. In some implementations, operation 506 may beperformed by a registration component the same as or substantiallysimilar to the registration component 406 illustrated and describedherein.

At an operation 508, the client device may be authenticated by thecontroller 104 in response to the client device registration requestbeing received at operation 506. In some implementations, operation 508may be performed by an authentication component the same as orsubstantially similar to the authentication component 408 illustratedand described herein.

At an operation 510, a session is established at the controller 104 withthe client device 102 in response to the client device beingauthenticated at operation 508. In some implementations, operation 510may be performed by a session component the same as or substantiallysimilar to the session component 410 illustrated and described herein.

At an operation 512, an instruction is generated at the controller 104to cause the agent 108 to grant the client device 102 access to theserver 106. In some implementations, operation 512 may be performed by aclient access configuration component the same as or substantiallysimilar to the client access configuration component 412 illustrated anddescribed herein.

FIG. 6 is a flow diagram illustrating an exemplary method 600 ofremoving a client device's access at a controller in accordance with oneembodiment of the disclosure. It will be described with reference toFIG. 4. The operations of method 600 presented below are intended to beillustrative. In some embodiments, method 600 may be accomplished withone or more additional operations not described and/or without one ormore of the operations discussed. Additionally, the order in which theoperations of method 600 are illustrated in FIG. 6 and described belowis not intended to be limiting.

In some embodiments, method 600 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 600 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 600.

At an operation 602, a request to disconnect a session with the clientdevice 102 may be received at controller 104. In some implementations,operation 602 may be performed by a session component the same as orsubstantially similar to the session component 410 illustrated anddescribed herein.

At an operation 604, the session with the client device is disconnectedin response to the request to disconnect being received at operation602. In some implementations, operation 604 may be performed by asession component the same as or substantially similar to the sessioncomponent 410 illustrated and described herein.

At an operation 606, a determination is made as to whether the clientdevice 102 still has access to the server 106. The determination made atoperation 606 may involve querying the agent 108, querying one or moreintermediate information servers, checking the status of client device102 stored on the controller 104, and/or any other operations. Forinstance, as an illustration, without limitation, data storage coupledto the controller 104 may be checked for client device 102's statusinformation, which may indicate whether the client device 102 still hasor does not have access to the server 106. As shown, in the case whereit is determined that the client device 102 does not have access to theserver 106, the process 600 proceeds to end. In the case where it isdetermined that the client device 102 still has access to the server106, the process 600 may proceed to operation 608. In someimplementations, operation 606 may be performed by a client accessconfiguration component the same as or substantially similar to theclient access configuration component 412 illustrated and describedherein.

At an operation 608, an instruction may be generated at controller 104to cause the agent 108 to remove the client device 102's access to theserver 106. In some implementations, operation 608 may be performed by aclient access configuration component the same as or substantiallysimilar to the client access configuration component 412 illustrated anddescribed herein.

FIG. 7 is a flow diagram illustrating an exemplary method 700 ofgranting a client device access at the controller shown in FIG. 4 inaccordance with one embodiment of the disclosure. It will be describedwith reference to FIG. 4. The operations of method 700 presented beloware intended to be illustrative. In some embodiments, method 700 may beaccomplished with one or more additional operations not described and/orwithout one or more of the operations discussed. Additionally, the orderin which the operations of method 700 are illustrated in FIG. 7 anddescribed below is not intended to be limiting.

In some embodiments, method 700 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 700 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 700.

At an operation 702, a request to establish a session with the clientdevice 102 may be received at controller 104. In some implementations,operation 702 may be performed by a session component the same as orsubstantially similar to the session component 410 illustrated anddescribed herein.

At an operation 704, the session with the client device 102 isestablished in response to the request to connect being received atoperation 702. In some implementations, operation 704 may be performedby a session component the same as or substantially similar to thesession component 410 illustrated and described herein.

At an operation 706, a determination is made as to whether the clientdevice 102 already has access to the server 106. The determination madeat operation 706 may involve querying the agent 108, querying one ormore intermediate information servers, checking the status of clientdevice 102 stored on the controller 104, and/or any othersub-operations. For instance, as an illustration, without limitation,data storage coupled to the controller 104 may be checked for clientdevice 102's status information, which may indicate whether the clientdevice 102 already has or does not have access to the server 106. Asshown, in the case where it is determined that the client device 102already has access to the server 106, the process 700 proceeds to end.In the case where it is determined that the client device 102 does nothave access to the server 106, the process 700 may proceed to operation708. In some implementations, operation 706 may be performed by a clientaccess configuration component the same as or substantially similar tothe client access configuration component 412 illustrated and describedherein.

At an operation 708, an instruction may be generated at controller 104to cause the agent 108 to grant the client device 102 access to theserver 106. In some implementations, operation 708 may be performed by aclient access configuration component the same as or substantiallysimilar to the client access configuration component 412 illustrated anddescribed herein.

Attention is now directed to FIGS. 8 and 9, which illustrate twoexemplary systems configured to facilitate the access control mechanismin accordance with two embodiments of the disclosure. As should be clearfrom FIGS. 8 and 9, the systems illustrated therein have more detailsthan system 100 shown FIG. 1. The systems shown in FIGS. 8 and 9 areintended to be illustrations of two examples in accordance with thedisclosure, and thus are not intended to be limiting.

FIG. 8 illustrates one exemplary system 800 for facilitating the accesscontrol mechanism in accordance with one embodiment of the disclosure.It will be described with comparison to FIG. 1. As shown in thisexemplary system 800, the controller may have access to user/clientdevice access matrix 802. For example, without limitation, theuser/client device access matrix 802 may be stored in data storagecoupled to the controller. The user/client device access matrix 802 mayspecify various access configurations for a user and/or correspondingclient device 102. For example, for a given user, the user/client deviceaccess matrix 802 may specify that the given user may have access to afirst service associated with a specific agent, say agent #1 from aspecific client device, say client device #1. An example of such aaccess configuration is provided below

Given User:Client Device #1; Has Access To Service #1 In this examplethe controller may be configured to verify whether a registrationrequest or a request to establish a session is originating from aspecific user in addition to authenticating that the requests areoriginating from a specific client device. User credential informationsuch as username and password at the client device may be included inthe aforementioned requests.

As also shown in this example, the controller may communicate with theagent using any one of suitable communication protocols, which mayinclude UDP. The controller may issue instructions to remove or grantclient device access to the server in response to the requests (e.g.,registration requests, session disconnection requests, and/or sessionestablishment requests as described herein) received from the clientdevice and transmit the instructions to the agent. As shown in thisexample, in implementations, such instructions may be encapsulated in acontrol plane provided by the communication protocols facilitated by thecommunication link between the controller and the server. It should beunderstood the communication protocols listed in this example are merelyillustrative. The communication between the controller and the serverand/or the communication between the client device and the server may beimplemented by any communication protocols as desired by theprovider(s), administrator(s), manufacturer(s), and/or any otherentities related to the server. In some embodiments of the disclosure,the communication link between the controller and the server is asecured communication link. In one embodiment of the disclosure, asdiscussed above, the communication between the controller and the serveris via the transport and security protocol described in U.S. Pat. No.8,745,723.

As also shown, in this example, the communication between the controllerand the agent may be through the firewall component of the server. Thatis, the firewall component of the server may be configured to permitonly authorized controller(s) to access the agent associated with theserver. For example, such configuration may be at a device level (e.g.,only controller with certain hardware or network address may have accessto the agent).

As also shown in this example, the agent may acquire the user ID and/orclient device network address such as the IP address from theinstructions issued by the controller via the firewall component. Theuser ID may be used to verify if a requesting user has access to theserver, and the client device network address may be used to configurethe firewall component such that access to the server may be granted tothe client device.

As illustration of how the access control mechanism may be facilitatedby the system 800, the following scenario is provided: a given user maylog into a client device and initialize an application (e.g., abrowser); the browser then transmits a session establishment requestrequesting the controller to establish a session with the client deviceand requesting access to the web services provided by server; thecontroller may then use the user/client access matrix 802 to determinewhether the user has permission to access the web services provided bythe server; and, in response to determination that the user has thepermission to access the web services provided by the server, thecontroller issues an instruction instructing the agent to grant theclient device access to the web services provided by the server. In thisexample, the instruction generated by the controller may include userinformation regarding the given user that is active on the clientdevice. At the agent, the instruction is received through the firewallcomponent. The agent may extract user information from the instructionand determine on its own whether the user identified by the userinformation indeed has permission to access the web services provided bythe server. In response to a determination that the given user hasaccess to the web services provided by the server, the agent thenconfigures the firewall component via the iptable command 806illustrated in FIG. 8 and described herein to grant the client deviceaccess to the server (for example, add an entry in the firewallconfiguration to allow the client device to communicate with the serveron port 80). In some examples, the agent may inform the client devicethat the client device has been granted access to the server via thecontroller. The client device may then transmit data to the server forreceiving the data service(s) provided by the server via thecommunication link between the server and the client device. As shown,the transmission of the data provided by the data service(s) may beimplemented using, for example, user datagram protocol (UDP), transportcontrol protocol (TCP), secured socket layer (SSL), transport securitylayer (TLS), hypertext transport protocol (HTTP), file transfer protocol(FTP), Telnet, rich site summary (RSS), and/or any other standard ornon-standard communication protocols for transmitting data between theserver and client.

FIG. 9 illustrates another exemplary system 900 for facilitating theaccess control mechanism in accordance with one embodiment of thedisclosure. It will be described with comparison to FIG. 8. As shown inthis example, the controller may be operatively coupled to anadministration server 902. The administration server 902 may beconfigured to provide administration service to enable an administratorto manage the controller. In implementations, to facilitate this, theadministration server 902 may obtain event records from the controllerand store in memory storage, such as memory cache, of the administrationserver 902. As also shown, the administration server 902 may beconfigured to keep system logs regarding the controller and/or thesystem 900 in general based on the event records obtained. As alsoshown, the administration server 902 may be configured to provide a userinterface enabling the administrator of system 900 to view the events ofsystem 900, the system logs, and/or any other administrative informationregarding system 900. In some embodiments, the user interface may enablethe administrator to configure the controller. For example, theadministrator may be enabled to configure the controller to register aset of client devices only.

Also shown in this example is a monitoring system 904 coupled to thecontroller. In one implementation, the monitoring system 904 is anenterprise monitoring system. In this example, the controller isconfigured to provide an interface to the monitoring system 904 suchthat existing monitoring services available through the monitoringsystem may be used to monitor the events, activities, status, and/or anyother information stored on the controller.

FIG. 10 illustrates various examples of topologies for configuring theclient device, controller, and agent in accordance with the disclosure.Topology A illustrates a client device 1002 a included in a clientsystem 1004 a, which may be connected to the controller 1006 a such thatthe client device 1002 a may register itself to the controller 1006 aand/or establish/disconnect a session with the controller 1006 a in amanner as described herein. As shown, in topology A, the controller 1006a is also connected to a system 1008 a that comprises agent 1010 a, suchthat the controller 1006 a may issue instructions to the system 1008 ainstructing the agent 1010 a to add/remove client device 1002 a accessto one or more services provided or controlled by system 1008 a.

Topology B illustrates an example where the controller 1006 a may beconnected to multiple agents such as agents 1010 a and 1010 b. As shown,the individual agents connected to the controller 1006 a in topology Bmay reside in separate host systems. In this example, agent 1010 aresides in host system 1008 a and agent 1010 b resides in host system1008 b. Through topology B as shown, the access control mechanism inaccordance with the disclosure enables a client device, such as theclient device 1002 a, to have access to services provided or controlledby host systems 1008 a and 1008 b via a single controller 1006 a. Itshould be understood, although only two agents are shown in this exampleas connected to the controller 1006 a, this is not intended to belimiting. The number of agents that may be connected to the controller1006 a in accordance with topology B may be however many as desired bythe provider(s), administrator(s), manufacturer(s), and/or any otherentities related to controller 1006 a.

Topology C illustrates an example where the controller 1006 a may beconnected to multiple client systems such as the client devices 1002 aand 1002 b. As shown, the individual client devices connected to thecontroller 1006 a in topology C may reside in separate client systems.In this example, client device 1002 a resides in client system 1004 aand client device 1002 b resides in client system 1004 b. Throughtopology C as shown, the access control mechanism in accordance with thedisclosure enables an agent, such as the agent 1010 a, to control accessof multiple client devices to the service(s) provided or controlled bythe host system 1008 a. It should be understood, although only twoclient devices are shown in this example as connected to the controller1006 a, this is not intended to be limiting. The number of clientdevices that may be connected to the controller 1006 a in accordancewith topology C may be however many as desired by the provider(s),administrator(s), manufacturer(s), and/or any other entities related tocontroller 1006 a.

Topology D illustrates an example where a controller 1006 a may beconnected to multiple client devices and multiple agents. Topology Dprovides great flexibility for controlling access of multiple clientdevices to services provided by multiple host systems. In one example,the controller 1006 a in topology D is configured with the capability toissue instructions to a suitable agent for granting or removing accessto a client device connected to controller 1006 a.

Topology E illustrates an example where a controller 1006 a may beconnected to a system 1004 a comprising a client 1002 a and an agent1004 a and connected to a another system comprising a client 1002 b andan agent 1004. Topology E provides great system integrity and/orreliability for controlling client devices residing on the same systemthrough a single controller and a single host system. Topology Eillustrates, in accordance with the present disclosure, a computersystem, such as system 1004 a or 1008 a shown in this example, may beconfigured as a client whose access to data service(s) provided by aserver is controlled by some other agent(s); and may also be configuredto serve as an agent to control access of some other client(s) to dataservice(s) provided by the same or a different server. Such a topologyprovides great flexibility and high availability to the access controlmechanism disclosed herein.

It should be understood that the examples of different topologies shownin FIG. 10 are merely illustrative and thus not intended to be limiting.Other topologies by which the controller, client device(s) and/or theagent(s) are contemplated. It should also be appreciated that althoughthe controller, client device(s), and agent(s) are illustrated asresiding on different systems, this is not intended to be limiting. Itis contemplated that any combination of client device(s), agent(s), andcontroller(s) may reside on the same system or device. For example, thehost system 1008 a shown in topology A may comprise one or more clientsand/or one or more controllers in addition to the agent 1010 a shown.That is the host system 1008 a may be configured to execute a client, acontroller, and/or a data service provider. It is contemplated that anynode on the access control network in accordance with the disclosure maybe dynamically configured to be a client, a controller, and/or a dataservice provider. For example, without limitation, at time T, the hostsystem 1008 a may be configured to serve as an agent 1008 a as shown intopology A, and at time T+1, the host system 1008 may be configured toserve as an agent as well as a client as shown in topology E. One ofordinary skills in the art would appreciate configuring a host system insuch a dynamic manner to facilitate may achieve flexible mesh networkconfiguration and/or high availability for the access control mechanismin accordance with the disclosure.

FIG. 11 illustrates one example of providing redundancy through multiplecontrollers in accordance with the disclosure. As shown in this example,multiple controllers may be provided to facilitate failover protectionin case one or more controllers are out of service or malfunctioning. Inthis example, two controllers, 1102 and 1104, are employed. Thecontroller 1102 is the primary controller, such that the access controlmechanism is facilitated by controller 1102 between the client and agentdescribed herein. The controller 1104 is the backup controller in thisexample. As shown, between the controller 1102 and the controller 1104,a synchronization link 1106 may be established. In some implementations,the synchronization link 1106 may be used to transmit variousinformation between the controllers 1102 and 1104. The information mayinclude the status of the controller 1102 and/or 1104, activities atcontroller 1102 since last synchronization, activities at 1104 sincelast synchronization, and/or other information. In one embodiment, thecontroller 1104 keeps all the activities that have taken place atcontroller 1102 such as which one or ones of client devices have asession with the controller 1102 (e.g., logged-in on controller 1102),what access has been granted and/or removed for those client devices,statuses of client devices registered at controller 1102, and/or anyother information. In that embodiment, the controller 1104 is configuredto take over controller 1102 in the event that controller 1102 fails tosynchronize controller 1104 over a predetermined period of time orcontroller 1102 announces to controller 1104 to take over. To take over,the controller 1104 may announce itself to client and agent thatcontroller 1102 is down and controller 1104 has taken over. Thecontroller 1104 may then be switched to the primary controller and thecontroller 1102 may be switched to the backup controller. Thesynchronization between controllers 1102 and 1104 may resume oncecontroller 1104 is back online again. In some examples, controller 1102remains the backup controller until controller 1104 fails over. In someexamples, controller 1102 takes over and resumes being the primarycontroller as soon as it is back up online.

Implementations of the invention may be made in hardware, firmware,software, or various combinations thereof. The invention may also beimplemented as instructions stored on a machine-readable medium, whichmay be read and executed using one or more processing devices. In oneimplementation, machine-readable media may include various mechanismsfor storing and/or transmitting information in a form that can be readby a machine (e.g., a computing device). For example, machine-readablestorage media may include read-only memory, random access memory,magnetic disk storage media, optical storage media, flash memorydevices, and other media for storing information, and machine-readabletransmission media may include forms of propagated signals, includingcarrier waves, infrared signals, digital signals, and other media fortransmitting information. While firmware, software, routines, orinstructions may be described in the above disclosure in terms ofspecific exemplary aspects and implementations performing certainactions, it will be apparent that such descriptions are merely for thesake of convenience and that such actions in fact result from computingdevices, processing devices, processors, controllers, or other devicesor machines executing the firmware, software, routines, or instructions.

Furthermore, aspects and implementations may be described in the abovedisclosure as including particular features, structures, orcharacteristics, but it will be apparent that every aspect orimplementation may or may not necessarily include the particularfeatures, structures, or characteristics. Further, where particularfeatures, structures, or characteristics have been described inconnection with a specific aspect or implementation, it will beunderstood that such features, structures, or characteristics may beincluded with other aspects or implementations, whether or notexplicitly described. Thus, various changes and modifications may bemade to the preceding disclosure without departing from the scope orspirit of the invention, and the specification and drawings shouldtherefore be regarded as exemplary only, with the scope of the inventiondetermined solely by the appended claims.

What is claimed is:
 1. An agent component configured to facilitateaccess control for a client device to access one or more services thatare provided by a server, wherein the server includes the agentcomponent and a firewall, wherein the client device is registered with acontroller through a client registration request that includes identityinformation identifying the client device, the agent componentcomprising: one or more physical processors configured bymachine-readable instructions to: transmit an agent registration requestfrom the agent component to register the agent component with thecontroller, the agent component being associated with the server;receive an initial access grant instruction from the controller, whereinthe initial access grant instruction causes the agent component to grantthe client device access to the server for the first time; responsive toreceiving the initial access grant instruction, dynamically configurethe firewall to grant the client device access to the server; andreceive control instructions from the controller, wherein the controlinstructions cause the agent component to control the firewall, whereinthe firewall controls access by the client device to the server, whereinthe control instructions are based on whether a current session with theclient device is established and whether access to the server is grantedto the client device such that: responsive to the current session notbeing established and the access to the server being granted to theclient device, a first control instruction to cause the agent componentto control the firewall to remove the access by the client device to theserver is received by the agent component, and responsive to the currentsession being established and the access to the server not being grantedto the client device, a second control instruction to cause the agentcomponent to control the firewall to grant the client device access tothe server is received by the agent component; wherein the agentcomponent is protected by the firewall, and wherein the agent componentis adapted to dynamically configure the firewall to grant and/or removeaccess by the client device to the service.
 2. The agent component ofclaim 1, wherein the agent component and the client device areconfigured to register with the controller during startup.
 3. The agentcomponent of claim 1, wherein the controller is protected by thefirewall.
 4. The agent component of claim 1, wherein the agent componentis configured to receive the control instructions from the controllerthrough the firewall.
 5. The agent component of claim 1, wherein theidentity information included in the client registration requestcomprises information indicating an internet protocol (IP) addressassociated with the client device.
 6. The agent component of claim 1,wherein the receipt of the control instructions by the agent componentis effectuated using user datagram protocol (UDP) or a transport layerprotocol.
 7. The agent component of claim 1, wherein the one or morephysical processors are further configured to authenticate the agentcomponent after the agent registration request has been transmittedand/or to authenticate the client device after the client registrationrequest has been transmitted.
 8. The agent component of claim 1, whereinthe one or more physical processors are further configured to generateinstructions to cause the client device to authenticate the controllersubsequent to use of the client registration request and/or to generateinstructions to cause the agent component to authenticate the controllersubsequent to transmission of the agent registration request.
 9. Theagent component of claim 1, wherein the one or more physical processorsare further configured to generate a system log and to provide thesystem log to an administration server over a network.
 10. The agentcomponent of claim 1, wherein the one or more physical processors arefurther configured to: facilitate intermittently terminating andestablishing sessions with the client device, wherein a first session isterminated in response to a determination that the client device is notresponsive to one or more checks by the controller, and wherein a secondsession is established in response to activity by the client device. 11.A method for facilitating access control for a client device to accessone or more services that are provided by a server, the server includingan agent component and a firewall, wherein the client device isregistered with a controller through a client registration request thatincludes identity information identifying the client device, the methodbeing implemented in a physical processor configured by machine-readableinstructions to execute computer programs, the method comprising:transmitting an agent registration request from the agent component toregister the agent component with the controller, the agent componentbeing associated with the server; receiving an initial access grantinstruction from the controller, wherein the initial access grantinstruction causes the agent component to grant the client device accessto the server for the first time; responsive to receiving the initialaccess grant instruction, dynamically configuring the firewall to grantthe client access to the server; and receiving control instructions fromthe controller, wherein the control instructions cause the agentcomponent to control the firewall, wherein the firewall controls accessby the client device to the server, wherein the control instructions arebased on whether a current session with the client device is establishedand whether access to the server is granted to the client device suchthat: responsive to the current session not being established and theaccess to the server being granted to the client device, a first controlinstruction to cause the agent component to control the firewall toremove access by the client device to the server is received by theagent component, and responsive to the current session being establishedand the access to the server not being granted to the client device, asecond control instruction to cause the agent component to control thefirewall to grant the client device access to the server is received bythe agent component; wherein the agent component is protected by thefirewall, and wherein the agent component is adapted to dynamicallyconfigure the firewall to grant and/or remove the access by the clientdevice to the server.
 12. The method of claim 11, wherein the agentcomponent and the client device are configured to register with thecontroller during startup.
 13. The method of claim 11, wherein thecontroller is protected by the firewall.
 14. The method of claim 11,wherein the agent component receives the control instructions from thecontroller through the firewall.
 15. The method of claim 11, wherein theidentity information included in the client registration requestcomprises information indicating an internet protocol (IP) addressassociated with the client device.
 16. The method of claim 11, whereinthe receipt of the control instructions by the agent component iseffectuated using user datagram protocol (UDP) or a transport layerprotocol.
 17. The method of claim 11, further comprising authenticatingthe agent component after the agent registration request has beentransmitted and/or authenticating the client device after the clientregistration request has been transmitted.
 18. The method of claim 11,further comprising generating instructions to cause the client device toauthenticate the controller subsequent to use of the client registrationrequest and/or generating instructions to cause the agent component toauthenticate the controller subsequent to transmission of the agentregistration request.
 19. The method of claim 11, further comprisinggenerating a system log and providing the system log to anadministration server over a network.
 20. The method of claim 11,further comprising facilitating intermittently terminating andestablishing sessions with the client device, wherein a first session isterminated in response to a determination that the client device is notresponsive to one or more checks by the controller, and wherein a secondsession is established in response to activity by the client device.